const JUST_NOW = 1000 * 10; //10s内
const IN_SECOND = 1000 * 60; //一分钟
const IN_MINUTE = 1000 * 60 * 60; //一小时
const IN_HOUR = 1000 * 60 * 60 * 12; //12小时
const IN_DAY = 1000 * 60 * 60 * 24 * 1; //1天
const IN_MONTH = 1000 * 60 * 60 * 24 * 30 * 12; //1个月

// 在所需使用dayjs的js文件引入此文件
import dayjs from './dayjs.min.js'
// export function updateTimeShow(time) {

//新消息，不显示
//当天消息，显示：10:22
//昨天消息，显示：昨天 20:41
//今年消息，上午下午，显示：3月17日 下午16:45
//其他消息，上午下午，显示：2020年11月2日 下午15:17

/*不显示的条件*/
// 新消息（小于5分钟）
// 当天的消息（间隔不大于等于5分钟）

//循环处理时间
/**
 * 参数
 * arr：数据数组
 * key：数组中对象的时间key键。
 * 新增属性
 * show_time_type：时间的类型
 * show_time：页面展示输出的时间
 * is_show_time：间隔上个时间是否大于5分钟，大于则显示当前时间，反之。
 **/
function checkShowRule(arr, key) {
  let newArr = arr.map((item, index, array) => {
    let obj = toggleTime(item[key]);
    item['show_time_type'] = obj.type;
    item['show_time'] = obj.time;
    if (index > 0) {
      item['is_show_time'] = compareTimeInterval(array[index - 1][key], array[index][key]);
    } else {
      item['is_show_time'] = true;
    }
    return item;
  });
  return newArr;
}
//根据不同时间的消息，输出不同的时间格式
export function toggleTime(date) {

  let nowDate = dayjs(new Date()); //当前时间
  let oldDate = dayjs(new Date(date)); //参数时间

  // time1 = nowDate.diff(oldDate, 'second')
  // console.log(time1)

  let time;
  let type = getDateDiff(date);

  // let type = 1;
  //1：新消息，2：当天消息,3：昨天消息，4：今年消息，5：其他消息
  if (type == -1) {
    time = "刚刚"; //新消息，不显示时间，<30秒
  }
  // 30秒 ~ 1分钟
  else if (type == 0) {
    time = nowDate.diff(oldDate, 'second') + '秒前'; //当天消息，显示：10:22
  }
  // 1分钟 ~ 60 分钟
  else if (type == 1) {
    time = nowDate.diff(oldDate, 'minute') + '分钟前'; //当天消息，显示：10:22
  }
  // 1小时 ~ 24小时
  else if (type == 2) {
    time = nowDate.diff(oldDate, 'hour') + '小时前'; //当天消息，显示：10:22
  }
  // 昨天
  else if (type == 3) {
    time = dayjs(date).format("昨天 H:mm"); //昨天消息，显示：昨天 20:41
  } else if (type == 4) {
    time = dayjs(date).format("M月D日 AH:mm").replace("AM", "上午").replace("PM", "下午"); //今年消息，上午下午，显示：3月17日 下午16:45
  } else if (type == 5) {
    time = dayjs(date).format("YYYY年M月D日 AH:mm").replace("AM", "上午").replace("PM", "下午"); //其他消息，上午下午，显示：2020年11月2日 下午15:17
  }

  return time
  // return {
  //   time: time,
  //   type: type
  // };
}
//判断消息类型
function getDateDiff(date) {
  let nowDate = dayjs(new Date()); //当前时间
  let oldDate = dayjs(new Date(date)); //参数时间
  let timeTemp = dayjs(getThisTime().now.split(" ")[0] + "00:00").diff(oldDate, 'hour');
  let result;
  
  // console.log(nowDate.date() - oldDate.date())
  let diff = nowDate - oldDate
  //优先判断昨天消息。今年的日期00:00的时间与上一个时间的时间戳小于1天，那就判断为昨天消息
  if ((nowDate.year() - oldDate.year() == 1 || nowDate.month() - oldDate.month() == 1) && timeTemp >= 0 && timeTemp <= 24) {
    result = 3;
  }
  // 其他
  else if (diff <= JUST_NOW) {
    result = -1;
  }
  // 秒
  else if (diff <= IN_SECOND) {
    result = 0;
  }
  // 分钟
  else if (diff <= IN_MINUTE) {
    result = 1;
  }
  // 小时
  else if (diff <= IN_HOUR && nowDate.date() == oldDate.date()) {
    result = 2;
  }
  // 天
  else if (diff <= IN_DAY || nowDate.date() - oldDate.date() == 1) {
    result = 3;
  }
  // 月份
  else if (diff <= IN_MONTH && nowDate.year() == oldDate.year()) {
    result = 4;
  }
  // 现在年份与上一个时间的差大于等于1 
  else {
    result = 5;
  }
  return result;
}

//判断两个时间差是否大于5分钟
function compareTimeInterval(t1, t2) {
  // console.log(t1,t2,dayjs(t2)-dayjs(t1));
  return dayjs(t2) - dayjs(t1) >= 300000 ? true : false;
}

//获取当前时间，当前日期
function getThisTime(timeStamp) {
  let myDate = timeStamp ? new Date(parseInt(timeStamp) * 1000) : new Date();

  function p(s) {
    return s < 10 ? '0' + s : s;
  }
  return {
    'year': myDate.getFullYear(),
    'month': myDate.getMonth() + 1,
    'date': myDate.getDate(),
    'h': myDate.getHours(),
    'm': myDate.getMinutes(),
    's': myDate.getSeconds(),
    'now': myDate.getFullYear() + '-' + p(myDate.getMonth() + 1) + "-" + p(myDate.getDate()) + " " + p(myDate.getHours()) + ':' + p(myDate.getMinutes()) + ":" + p(myDate.getSeconds())
  };
}
// }